💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    연산자와 조건문 | ✅저자: 이유정(박사)

    Bool만들기: 비교연산자

    🔹 비교 연산자란?

    비교 연산자는 두 값을 비교해서 결과를 True(참) 또는 False(거짓)로
    반환하는 연산자입니다.(T, F는 대문자) 이 결과는 조건문, 반복문,
    필터링 등에 자주 사용됩니다.
    즉, "이게 맞아?"를 판단해주는 연산자예요.
    
    연산자 의미 예시 결과
    == 같다 3 == 3 True
    != 다르다, 같지 않다. 3 != 4 True
    > 크다 5 > 2 True
    < 작다 1 < 10 True
    >= 크거나 같다 4 >= 4 True
    <= 작거나 같다 2 <= 1 False

    </> 예시코드1 : 사용자 입력 검증 및 조건 분기 (회원가입 나이 제한)

    age = int(input("나이를 입력하세요: ")) # 13
    
    if 0 < age < 100:
        if age < 14:
            print("가입 불가: 만 14세 미만은 가입할 수 없습니다.")
        elif age >= 19:
            print("성인 인증 완료: 전체 서비스 이용 가능")
        else:
            print("청소년 계정으로 제한된 서비스 이용 가능")
    else:
        print("입력 오류: 나이는 1~99 사이로 입력해주세요.")
    

    🖨️ 출력결과:

    가입 불가: 만 14세 미만은 가입할 수 없습니다.
    

    🔍 해설:

    • 입력값의 유효성 검사 (0 < age < 100)
    • 연령대에 따라 조건 분기 (< 14, >= 19 등)
    • 실제 사용자 인증, 서비스 제한 등에 많이 쓰이는 형식입니다.

    ◽ 조건식의 삼항 연산자 (삼항 조건 연산자) 삼항 연산자는 조건에 따라 하나의 값을 선택할 때 사용하는 간단한 조건문 표현 방식입니다. 한 줄로 if-else 구문을 표현할 수 있어 가독성이 좋고 코드가 간결해집니다. 단, 중첩 삼항 연산자를 활용하면 가독성이 나빠질 수 있습니다.

    📖 문법, 구문(syntax):

    변수 = 값1(True 자리) if 조건식 / else2(False 자리)
    

    </> 예시코드1 : 사용자 입력 검증 및 조건 분기 ⚠️ 권장하지 않음.

    age = int(input("나이를 입력하세요: ")) # 13
    
    if 0 < age < 100:
        if age < 14:
            print("가입 불가: 만 14세 미만은 가입할 수 없습니다.")
        elif age >= 19:
            print("성인 인증 완료: 전체 서비스 이용 가능")
        else:
            print("청소년 계정으로 제한된 서비스 이용 가능")
    else:
        print("입력 오류: 나이는 1~99 사이로 입력해주세요.")
    
    # 삼항으로 변경
    
    age = int(input("나이를 입력하세요: "))
    
    result = (
        "가입 불가: 만 14세 미만은 가입할 수 없습니다." if 0 < age < 14 else
        "성인 인증 완료: 전체 서비스 이용 가능" if 19 <= age < 100 else
        "청소년 계정으로 제한된 서비스 이용 가능" if 14 <= age < 19 else
        "입력 오류: 나이는 1~99 사이로 입력해주세요."
    )
    
    print(result)
    

    </> 예시코드2 : 문자열 처리와 조건문 (파일 확장자 체크)

    filename = input("파일명을 입력하세요: ")
    
    if filename.endswith(".jpg") or filename.endswith(".png"):
        print("이미지 파일입니다.")
    elif filename.endswith(".pdf") or filename.endswith(".docx"):
        print("문서 파일입니다.")
    else:
        print("지원하지 않는 파일 형식입니다.")
    

    ◽ 위의 코드를 삼항연산자로 변경

    filename = input("파일명을 입력하세요: ")
    
    result = ( "이미지 파일입니다." if filename.endswith(".jpg") or filename.endswith(".png") else "문서 파일입니다." if filename.endswith(".pdf") or filename.endswith(".docx") else "지원하지 않는 파일 형식입니다."
    )
    print(result)
    

    📝 문제1] 점수 score가 다음 조건일 때, "우수" / "보통" / "미달" 중 하나를 출력하세요:

    • 90 이상이면 "우수"
    • 70 이상 90 미만이면 "보통"
    • 70 미만이면 "미달" 단, score = 85로 가정하고 작성하세요.

    ✅ 정답 코드:

    score = 85
    
    if score >= 90:
    	print("우수")
    elif score >= 70:
    	print("보통")
    else:
    	print("미달")
    

    🖨️ 출력 결과:

    보통
    

    📝 문제3] 다음 코드를 실행했을 때 출력 결과는?

    a = 3
    b = 8
    
    result = "짝수" if (a + b) % 2 == 0 else "홀수"
    print(result)
    

    🖨️ 출력 결과 (예시 입력: 3, 3):

    홀수
    

    </> 조건식으로 변경해보세요.

    a = 3
    b = 8
    
    if (a + b) % 2 == 0:
    	result = "짝수"
    else:
    	result = "홀수"
    
    print(result)
    

    논리연산자

    🔹 논리 연산자란?

    논리 연산자는 두 개 이상의 조건을 조합해서 True 또는 False 값을 
    만들어 냅니다.  
    조건이 여러 개일 때 and, or, not 연산자를 사용하여 복합 조건을 
    만들 수 있습니다.
    
    연산자 의미 예제 설명
    and 그리고 3 > 1 and 5 > 2 둘 다 참일 때만 True
    or 또는 3 < 1 or 5 > 2 하나만 참이어도 True
    not 반대 not (3 > 1) 결과를 반대로 바꿈(조건반전)

    </> 예시코드1 : 논리 연산자 기본 사용

    	a = 10
    	b = 5
    	c = 7
    	
    	print(a > b and a > c)  # 둘 다 참이면 True
    	print(a > b or a < c)   # 둘 중 하나라도 참이면 True
    	print(not a > c)        # 결과 반전
    

    🖨️ 출력결과:

    True
    True
    False
    

    🔍 해설:

    • 10 > 5 and 10 > 7 → 둘 다 True → 결과는 True
    • 10 > 5 or 10 < 7 → 첫 번째 조건이 True → 결과는 True
    • not 10 > 710 > 7True, 하지만 not이 반전시켜 → False

    </>예시코드2 : 로그인 권한 검사 예제

    user_logged_in = True
    user_role = "admin"
    
    if user_logged_in and (user_role == "admin" or user_role == "manager"):
        print("접근 허용: 관리자 페이지에 입장합니다.")
    else:
        print("접근 거부: 권한이 없습니다.")
    

    🖨️ 출력결과:

    접근 허용: 관리자 페이지에 입장합니다.
    

    🔍 해설:

    • user_logged_inTrue → 로그인 상태
    • user_role"admin""admin" 또는 "manager" 중 하나이므로 True
    • 전체 조건은
      True and (True or False)True and TrueTrue
    • 따라서 관리자 페이지에 접근 허용

    📝 문제1] 변수 x = 4, y = 9일 때, x < 10 and y > 5의 결과를 출력하세요.

    ✅ 정답 코드:

    x = 4 
    y = 9 
    
    print(x < 10 and y > 5)
    

    🖨️ 출력 결과:

    True
    

    🔍 해설:

    • x < 10True, y > 5True → 둘 다 참이므로 True

    📝 문제2] 변수 a = 3, b = 7일 때, a > 5 or b < 10의 결과를 출력하세요.

    ✅ 정답 코드:

    a = 3 
    b = 7 
    
    print(a > 5 or b < 10)
    

    🖨️ 출력 결과:

    True
    

    🔍 해설:

    • a > 5False, b < 10True → 하나만 참이어도 orTrue

    📝 문제3] 사용자에게 숫자를 입력받고, 10 이상인지 아닌지 반대로 판단하여 출력하세요.

    num = int(input("반드시숫자입력:"))
    print("10 미만인가요? " , not num >= 10)
    

    논리연산자의 활용

    🔹 논리 연산자 조합

    and, or, not과 같은 논리 연산자는 단독으로도 유용하지만,  
    if 조건문과 함께 사용하면 더 정교한 조건 판단이 가능해집니다.  
    복잡한 상황에서도 한 줄의 조건문으로 여러 조건을 조합할 수 있습니다.
    

    </> 예시코드1 : 사용자 나이와 국가를 함께 판단

    age = 25
    country = "Korea"
    	
    if age >= 20 and country == "Korea":
    	print("한국 성인입니다.")
    

    🖨️ 출력결과:

    한국 성인입니다.
    

    🔍 해설:

    • 두 조건 age >= 20country == "Korea"가 모두 이므로 실행됨
    • and 연산자를 사용하여 두 조건을 모두 만족하는지 확인

    </> 예시코드2 : 결제 완료된 VIP 회원만 할인 제공

    membership = "VIP"
    payment_complete = True
    
    if membership == "VIP" and payment_complete:
        print("할인이 적용되었습니다.")
    else:
        print("할인 대상이 아닙니다.")
    

    🖨️ 출력결과:

    할인이 적용되었습니다.
    

    🔍 해설:

    • membership == "VIP" → 참
    • payment_completeTrue (결제 완료)
    • 따라서 VIP 회원이며 결제도 완료한 경우 → 조건 True and True → 할인 적용

    📝 문제1] 변수 score = 85, attendance = 90일 때
    점수가 80 이상이고 출석률이 85 이상이면 "합격"을 출력하세요.

    ✅ 정답 코드:

    score = 85 
    attendance = 90  
    
    if score >= 80 and attendance >= 85:     
    	print("합격")
    

    🖨️ 출력 결과:

    합격
    

    🔍 해설:

    • 두 조건 모두 Trueand 연산 결과도 True"합격" 출력

    📝 문제2] 사용자에게 나이를 입력받고,
    20~30대인지 이후나이대 인지 확인하여 출력하는 조건문을 만들어 보세요.

    🖨️ 출력 결과 (예시 입력: 24):

    젊은세대
    

    ✨ 힌트:

    • 10대 조건과 30대 조건중 하나만 참이어도or연산으로True`

    ✅ 정답 코드:

    age = int(input("나이를 입력하세요: "))  
    
    if (age >= 10 and age < 20) or (age >= 20 and age < 30):     
    	print("젊은세대")
    

    📝 문제3] temperature가 0 미만이거나 35 초과일 경우
    "주의! 기온 이상"을 출력하세요.

    ✅ 정답 코드:

    temperature = int(input("현재 기온을 입력하세요: "))  
    if temperature < 0 or temperature > 35:     
    	print("주의! 기온 이상")
    

    🖨️ 출력 결과 (예시 입력: -2):

    주의! 기온 이상
    

    🔍 해설:

    • or을 사용해 둘 중 하나라도 조건을 만족하면 경고 메시지 출력
    • 극한의 기온에 대비한 조건 판단 예시

    if 조건문

    🔹 if 조건문이란?

    if 조건문은 프로그램에서 조건에 따라 다른 동작을 하도록 만드는 
    문법입니다. 
    즉, 어떤 조건이 참(True)일 때만 특정 코드를 실행하도록 합니다.
    

    📖 문법, 구문(syntax)

    if 조건:
        실행할 코드
    
    • 조건이 True일 때 → 들여쓴 코드를 실행
    • 조건이 False일 때 → 아무것도 실행하지 않음

    </> 예시코드1: if 조건문 기본 사용

    score = 85
    
    if score >= 80:
        print("좋은 점수입니다!")
    

    🖨️ 출력결과:

    좋은 점수입니다!
    

    🔍 해설:

    • score >= 80 조건이 True → if 아래 코드가 실행됨
    • 조건이 False라면 아무것도 출력되지 않음

    </> 예시코드2 : 사용자에게 직접 입력 받은 숫자를 양수 음수 0 판별받기

    number = input("정수 입력> ")      # 사용자로부터 문자열 입력 받음
    number = int(number)              # 입력 받은 문자열을 정수로 변환
    
    # 양수 조건
    if number > 0:                    # number가 0보다 크면 (양수)
        print("양수입니다")
    
    # 음수 조건
    if number < 0:                    # number가 0보다 작으면 (음수)
        print("음수입니다")
    
    # 0 조건
    if number == 0:                   # number가 0과 같으면
        print("0입니다")
    

    📝 문제1] 사용자에게 점수를 입력받고, 점수가 90점 이상이면 "A 등급"을 출력하세요.

    ✅ 정답 코드:

    score = int(input("점수를 입력하세요: "))  
    
    if score >= 90:     
    	print("A 등급")
    

    🖨️ 출력 결과 (예시 입력: 93):

    A 등급
    

    🔍 해설:

    • 입력된 점수가 90 이상 → 조건이 True이므로 "A 등급" 출력됨

    🔹 날짜/시간 활용하기

    datetime 모듈을 사용하면 현재 날짜와 시간을 가져와서 조건문과 함께
    요일 판별, 특정 시간대 처리, 날짜 비교 등에 활용할 수 있어요.
    - 날짜/시간 가져오기: from datetime import datetime
    - 현재 시각: datetime.now()
    

    ◽ 파이썬에서 모듈(module)이란, 함수, 변수, 클래스 등을 모아 놓은 .py 파일로, 다른 파이썬 코드에서 불러와서 사용할 수 있는 코드 단위를 말합니다.

    </> 예시코드: 현재 시각 확인

    from datetime import datetime 
    now = datetime.now() 
    
    print("현재 시각:", now)
    

    🖨️ 출력결과 (예시):

    현재 시각: 2025-05-08 11:20:45.123456
    

    🔍 해설:

    • datetime.now()는 현재 날짜와 시간을 가져옵니다.
    • 연도, 월, 일, 시, 분, 초까지 포함된 datetime 객체입니다.

    📝 문제1] 현재 시각이 정오 이전(12시 전)이면 "오전입니다."를 출력하세요.

    from datetime import datetime 
    now = datetime.now() 
    
    if now.hour < 12:
    	print("오전입니다.")
    

    🖨️ 출력 결과 (예시 시간: 09:15:00):

    오전입니다.
    

    🔍 해설:

    • now.hour는 현재 시간을 0~23 사이 숫자로 반환
    • 오전은 hour < 12 조건으로 판별

    📝 문제2] 현재 날짜가 월요일인지 판별하여 출력하세요.

    • 월 = 0, ....일 = 6
    from datetime import datetime 
    today = datetime.now() 
    
    weekday = today.weekday() # 월 = 0, 화 = 1 .....일 = 6 
    
    if weekday == 0:
    	print("오늘은 월요일 입니다.")
    
    if 0 <= weekday <= 4:
    	print("오늘은 평일 입니다.")
    

    🖨️ 출력 결과 (예시 날짜: 일요일):

    오늘은 월요일입니다.
    

    🔍 해설:

    • .weekday()는 요일을 숫자로 반환 (월=0, ..., 일=6)

    📝 문제3] 사용자가 입력한 생년(예: 2000)을 기준으로,
    성인(만 20세 이상)인지 판별해 "성인입니다."를 출력하세요.

    from datetime import datetime 
    birth_year = int(input("내가 태어난 년도: ex)2000"))
    
    current_year = datetime.now().year
    age = current_year - birth_year
    
    if age >= 20:
    	print("성인입니다")
    

    용어정리: 🔹 괄호를 붙이는 경우: 함수(function) 호출 🔹 괄호 없이 호출하는 경우: 속성(attribute) 접근

    ◽ 클래스 (Class)란? 객체를 만들기 위한 설계도입니다.
    속성(데이터)과 메서드(동작)를 함께 정의합니다.

    from datetime import datetime
    
    • datetime은 클래스입니다.
    • datetime 모듈 안에 있는 datetime 클래스를 불러온 것입니다.

    ◽ 함수(Function)란? 어떤 입력값을 받아서, 정해진 작업을 수행한 뒤 결과를 반환하는 코드의 묶음입니다.

    now = datetime.now()
    
    • now()는 클래스 메서드입니다. (즉, 클래스 내부에 정의된 함수)입니다.

    ◽ 객체(Object)란? 클래스를 기반으로 실제로 만들어진 결과물입니다. 함수나 속성을 가진 데이터 뭉치입니다.

    now = datetime.now()
    
    • datetime 클래스에서 만든 객체를 now라는 변수에 담은 것으로 now는 datetime 객체입니다.

    ◽ 속성(attribute)이란? 속성(attribute)은 객체가 가지고 있는 값(데이터)을 의미합니다.

    now.year
    now.month
    now.day
    
    • now 객체가 가진 정보(상태)를 나타내는 것들이 속성입니다.
    ◽ 주요 속성 datetime.now( )
    속성명 설명 예시 값 (now = 2025-05-12 07:30:15)
    year 연도 2025
    month 5
    day 12
    hour 7
    minute 30
    second 15
    microsecond 마이크로초 123456
    weekday() 요일 (월=0, 일=6) 0
    date() 날짜만 2025-05-12 (date 객체)
    time() 시간만 07:30:15.123456 (time 객체)
    datetime.now() 현재 날짜와 시간 클래스메서드
    datetime() ❌ 직접 사용 시 에러 발생하거나 전체 인자를 요구함

    🔹 짝수와 홀수 구분하기

    </> 예시코드: 1단계

    # 입력을 받습니다.
    number = input("정수 입력> ")
    
    # 마지막 자리 숫자를 추출
    last_character = number[-1]
    
    # 숫자로 변환하기
    last_number = int(last_character)
    
    # 짝수 확인
    if last_number == 0 \
        or last_number == 2 \
        or last_number == 4 \
        or last_number == 6 \
        or last_number == 8:
        print("짝수입니다")
    
    # 홀수 확인
    if last_number == 1 \
        or last_number == 3 \
        or last_number == 5 \
        or last_number == 7 \
        or last_number == 9:
        print("홀수입니다")
    

    </> 예시코드: 2단계

    # 입력을 받습니다.
    number = input("정수 입력> ") # 문자열 형태로 정수를 입력받음
    last_character = number[-1] # 문자열의 마지막 문자(끝자리 숫자)를 가져옴
    
    # 짝수 조건
    if last_character in "02468": # 끝자리가 짝수 문자 중 하나면
        print("짝수입니다")
    
    # 홀수 조건
    if last_character in "13579": # 끝자리가 홀수 문자 중 하나면
        print("홀수입니다")
    

    </> 예시코드: 3단계

    number = input("정수 입력> ")
    number = int(number) # 문자열을 정수(int)로 변환
    
    # 짝수 조건
    if number % 2 == 0: # 2로 나눈 나머지가 0이면 짝수
        print("짝수입니다")
    
    # 홀수 조건
    if number % 2 == 1:  # 2로 나눈 나머지가 1이면 홀수
        print("홀수입니다")
    
    TOP
    preload preload